#ifndef MESSAGE_H
#define MESSAGE_H

#include "user.h"
#include <time.h>

// 消息类型
typedef enum {
    MSG_PUBLIC,    // 公聊消息
    MSG_PRIVATE,   // 私聊消息
    MSG_SYSTEM     // 系统消息
} MessageType;

// 消息结构体
typedef struct {
    char sender[50];
    char receiver[50]; // 为空表示公聊
    char content[1024];
    time_t timestamp;
    MessageType type;
} Message;

// 初始化消息
extern void init_message(Message *msg, const char *sender, const char *receiver, 
                        const char *content, MessageType type);

// 格式化消息为字符串
extern char* format_message(const Message *msg);

// 保存消息到历史记录
extern bool save_message_to_history(const Message *msg, const char *history_dir);

// 加载用户的聊天历史
extern char* load_user_history(const char *username, const char *history_dir, int max_messages);

// 广播消息给所有在线用户
extern void broadcast_message(UserList *user_list, const char *message, int exclude_fd);

// 发送私聊消息
extern bool send_private_message(UserList *user_list, const char *sender, 
                                const char *receiver, const char *content);

#endif /* MESSAGE_H */